

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;
import modelos.MIngrediente;
import modelos.MProducto;
import vistas.VListado;
import vistas.VOrden;


public class CListado implements ActionListener {
    private VListado vista;
    private MIngrediente modeloIngrediente;
    private MProducto modeloProducto;
    private  boolean ascesdente, descesdente;
  //patron singleton instancia unica    
    private static CListado instancia;

	public static synchronized CListado getInstancia() {
		if (instancia == null)
			instancia = new CListado();
		return instancia;
    
	}
    public CListado() {
    	super();
        this.vista= new VListado(this);
    
        
        modeloIngrediente= new modelos.MIngrediente();
        modeloProducto = new modelos.MProducto();
        vista.addListener(this);
        ascesdente=true;
            descesdente=false;
    }
    public void mostrar() {
        vista.setVisible(true);
    }

    public void actionPerformed(ActionEvent ae) {
        System.out.println(ae.getActionCommand());
        if(ae.getActionCommand().equals("Ingrediente")){
            consultarIngredientes();
        }
        else if(ae.getActionCommand().equals("Producto")){
                consultarProductos();
        }
        else if(ae.getActionCommand().equals("Mas")){
                consultarMas();
        }
        else if(ae.getActionCommand().equals("Asc")){
            ascesdente=true;
            descesdente=false;
        }
        else if(ae.getActionCommand().equals("Desc")){
            ascesdente=false;
            descesdente=true;
        }
        else if(ae.getActionCommand().equals("Cancelar")){
            vista.reiniciar();
        }
        else
            vista.setVisible(false);
            
    }

    private void consultarIngredientes() {
        vista.reiniciar();
        vista.ingredientes();
        ArrayList<MIngrediente> v = modeloIngrediente.listarIngredientes();
        for (int i = 0; i < v.size(); i++)
            vista.agregarFila(v.get(i));
    }

    private void consultarProductos() {
        vista.reiniciar();
        vista.productos();
        ArrayList<String []> v = modeloProducto.listarVentas(ascesdente, descesdente);
        for (int i = 0; i < v.size(); i++)
            vista.agregarFila(v.get(i));
    }

     private void consultarMas() {
        vista.reiniciar();
        vista.mas();
        ArrayList<String []> v = modeloProducto.ingredientesUsados(ascesdente, descesdente);
        for (int i = 0; i < v.size(); i++)
            vista.agregarFila(v.get(i));
    }

}
